<?php
class Conexion{

	//Atributos de la clase
	var $txtServidor;
	var $txtPuerto;
	var $txtUsuario;
	var $txtPassword;
	var $txtBDatos;
	var $Conexion;
	var $txtConsulta;
	var $enTransaccion;
//	var $txtConsultaTrans;
//	var $indiceTransaccion;
	var $idInsertado;
	
	//Constructores de la clase
	function Conexion(){
		require("ConfConexion.php");
		$this->txtServidor = $Servidor;
		$this->txtPuerto = $Puerto;
		$this->txtUsuario = $Usuario;
		$this->txtPassword = $Password;
		$this->txtBDatos = $BDatos;
		$this->enTransaccion = 0;	
		//$this->indiceTransaccion = 0;	
	}
	
	//Funciones para establecer propiedades
	function estTxtServidor($ptxtServidor){
		$this->txtServidor = $ptxtServidor;
	}
	function estTxtUsuario($ptxtUsuario){
		$this->txtUsuario = $ptxtUsuario;
	}
	function estTxtPassword($ptxtPassword){
		$this->ptxtPassword = $ptxtPassword;
	}
	function estConexion($Conexion){
		$this->Conexion = $txtConsulta;
	}
	function estTxtBDatos($NombreBase){
		$this->txtBDatos = $NombreBase;
	}
	function estTxtConsulta($txtConsulta){
		$this->txtConsulta = $txtConsulta;
	}
	function estTxtPuerto($txtPuerto){
		$this->txtPuerto = $txtPuerto;
	}
	function estPropiedad($nombrePropiedad, $valorPropiedad){
		$this->arrPropiedades[$nombrePropiedad]['valor'] = $valorPropiedad;
	}
	
	//Funciones para obtener propiedades
	function obtTxtServidor(){
		return $this->txtServidor;
	}
	function obtTxtUsuario(){
		return $this->txtUsuario;
	}
	function obtTxtPassword(){
		return $this->txtPassword;
	}
	function &obtConexion(){
		return $this->Conexion;
	}
	function obttxtBDatos(){
		return $this->txtBDatos;
	}
	function obttxtConsulta(){
		return $this->txtConsulta;
	}
	function obtarrCampos(){
		return $this->arrPropiedades;
	}
	function obtTxtPuerto(){
		return $this->txtPuerto;
	}
	function obtIdInsertado(){
		return $this->idInsertado;
	}
		
	//Funciones de acceso a Base de Datos
	function Abrir(){
		if(!$this->Conexion = mysql_connect($this->txtServidor.":".$this->Puerto, $this->txtUsuario, $this->txtPassword)){
			echo "Conexi�n fallida al servidor de base de datos";
			exit;
		}
		if(!mysql_select_db($this->txtBDatos)){
			echo "Conexi�n fallida a la base de datos";
			exit;
		}
	}
	
	function Cerrar(){
		mysql_close($this->Conexion);
	}
	
	function IniciarTransaccion(){
		$txtConsultaTrans[0] = "SET AUTOCOMMIT=0;";
		$txtConsultaTrans[1] = "START TRANSACTION;";
		$this->enTransaccion = 1;
		$this->Abrir();
		$this->Ejecutar($txtConsultaTrans);
		
	}
	
	function Ejecutar($consultas){
			
		if($this->enTransaccion == 1){
			if(!isset($this->rollback)){
				$i=0;
				foreach($consultas as $cons){
					if(trim($cons) != ""){
						$rdo[$i] = mysql_query($cons, $this->Conexion);
						$error = mysql_error();
						//echo "consulta: ".var_dump($cons)."<br>";
						//echo "resultado: " . var_dump(mysql_fetch_assoc($rdo[$i])) ."<br><br>";	
						//echo "error: ". $error ."dump: ". var_dump($error) ."<br><br>";
	
						if($error != NULL){
							$rdo[$i] = mysql_query("ROLLBACK", $this->Conexion);
							//echo "ROLLBACK";
							//var_dump(mysql_error());
							$this->rollback = 1;
						}
					}
					$i++;
				}
			}	
			return $rdo;
		}
		else{
			//die("no");
			$this->Abrir();
			$i=0;
			foreach($consultas as $cons){
				$rdo[$i] = mysql_query($cons, $this->Conexion);		
				//echo "consulta: ".$cons."<br>";
				$error = mysql_error();
				//echo "error: ". $error ."dump: ". var_dump($error) ."<br><br>";
					
				$i++;
			}	
			
			$this->Cerrar();
			//die();
			return $rdo;
		}
	}
	
	function ConfirmarTransaccion(){
		$txtConsultaTrans[0] = " COMMIT ";
		$this->Ejecutar($txtConsultaTrans);
		$this->Cerrar();
		$this->enTransaccion = 0;
	}
	
}

?>